7-57 交换三个整数的次序

# 7-57 交换三个整数的次序

分数 10 作者 李泽林 单位 河北工程大学

本题目要求输入3个整数值a、b、c,把b中的值赋给a,把c中的值赋给b,把a中的值赋给c,最后输出a、b、c的值。

输入格式: 输入在一行中给出3个整数a、b、c,中间用空格隔开。

输出格式: 对每一组输入,在一行中输出交换后的a、b、c的值,中间用空格隔开。

输入样例:
4 5 6
输出样例:
5 6 4
1
2
3
4

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

# 代码:

方法1(使用中间变量):

#include <stdio.h>
int main(void){
    int intgr_a, intgr_b, intgr_c, cter_var;
    //定义整数intgr_a, intgr_b, intgr_c和中间变量cter_var
    scanf("%d %d %d", &intgr_a, &intgr_b, &intgr_c);
    cter_var = intgr_a;    //将第一个值赋给中间变量
    intgr_a = intgr_b;    //将第二个值赋给第一个值
    intgr_b = intgr_c;    //将第三个值赋给第二个值
    intgr_c = cter_var;    //最后将中间变量的值赋给第三个值
    printf("%d %d %d",intgr_a, intgr_b, intgr_c);    //最后输出
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12

方法2-进阶(不使用中间变量):

此方法不要求掌握,因为可读性差。 如果想要学习可点击 位运算 (opens new window),进行阅读

#include <stdio.h>
int main(){
	int a ,b,c;
    scanf("%d %d %d",&a,&b,&c);
    b = b^a^c;
    a = b^a^c;
    c = b^c^a;
    b = b^a^c;
    printf("%d %d %d",a,b,c);
}
1
2
3
4
5
6
7
8
9
10

解题思路:

  1. 方法1: step1:定义一个中间变量 step2:将第一个值赋给中间变量 step2:将第二个值赋给第一个值 step2:将第三个值赋给第二个值 step2:最后将中间变量值赋给第三个值

归属知识点: 引入中间变量

最后编辑于: 4/4/2024, 11:26:44 AM